﻿using System.Windows;
using System.Windows.Browser;
using SBPweb.RIA.Client.Contracts.Base;

namespace SBPweb.RIA.Client.Contracts.Models
{

    public interface IPluginContainerModel
    {

        #region Properties

        bool IsVisible
        {
            get;
            set;
        }

        string Id
        {
            get;
        }

        HtmlElement Container
        {
            get;
        }

        UIElement MainVisual
        {
            get;
            set;
        }

        #endregion

        #region Methods

        TInterface FetchScriptableModel<TInterface, TProxy>(string name)
            where TInterface : IScriptableModel
            where TProxy : ScriptableModelProxyBase, TInterface;

        void Destroy();

        void Move(double? left, double? top);

        void Move(int? left, int? top);

        void Resize(double? width, double? height);

        void Resize(int? width, int? height);

        void ResizeToMinimum(double? width, double? height);

        void ResizeToMaximum();

        T FindElement<T>(string name)
            where T : FrameworkElement;

        #endregion

    }

}